// SISTEMA : Sistema de Identificacao Criminal
// PROGRAMA : SCRP001
// O QUE FAZ � Relatorio da Ficha Indice Criminal
// Data : 11 de Setembro de 1997
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.util.Arrays;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm2100;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1420 O QUE FAZ � Relatorio da Ficha Indice Criminal *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

public class Scrp1420 {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrm2100 scrm2100;
	// Escopo - Scrm1421Report report1;
	// Escopo - Scrm1422Report report2;
	// Escopo - Scrm1423Report report3;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp1420 scrp1420Anterior;
	String faseproc = "0";
	private int jDataIni = 0;
	private int jDataFim = 0;
	private long jReg_geral = 0;
	// private String jNomeCompleto = "";
	// private String jMae = "";
	private int jData_nasc = 0;
	// private String[][] dedos = new String[6][3];
	private String jDelegacia = "";
	private String jDescMunicipio = "";
	private int jMunicipio = 0;
	private String jUfRegGeral = "";
	private int jDataRegistro = 0;
	private long jNoAutos = 0;
	private int jDataAtuacao = 0;
	private long jIdentidade = 0;
	private String jPai = "";
	private String jMaeLimpa = "";
	private String jAlcunha = "";
	private String jNomeAnterior = "";
	private int jSexo = 0;
	private int jCodMunNascimento = 0;
	private String jUfNascimento = "";
	private String jDocApresentado = "";
	private long jNumDocApresentado = 0;
	private String jOrgaoExpUf = "";
	private String jProfissao = "";
	private int jInstrucao = 0;
	private String jDescInstrucao = "";
	private String jNaturalidade = "";
	private String jAvRua = "";
	private int jNumero = 0;
	private String jBairro = "";
	private int jMunEndereco = 0;
	private String jUfEndereco = "";
	private int jCep = 0;
	private String jComplemento = "";
	private String jStatus = "";
	private String jDescreg = "";
	private int jAltura = 0;
	private String jDescAltura = "";
	private int jEstadoCivil = 0;
	private String jDescCivil = "";
	private int jCutis = 0;
	private String jDescCutis = "";
	private int jCorCabelo = 0;
	private String jDescCor = "";
	private int jTipoCabelo = 0;
	private String jDescTipocabelo = "";
	private int jCorOlhos = 0;
	private String jDescOlho = "";
	private String jSinais = "";
	private int jCompleicao = 0;
	private String jDescCompleicao = "";
	private String jNomeVitima = "";
	private String jMotivo = "";
	private int jOcorrencia = 0;
	private String[] jObservacoes = new String[5];
	private int jMatricula = 0;
	private String jNomeDigitador = "";
	private int jDataDig = 0;
	private int jHorario = 0;
	private long jFicha1 = 0;
	private long jFicha2 = 0;
	private String jVar = "";
	// private String chave = "C";
	private String jMensagem = "";
	private String jFuncao = "Consulta";
	private String jFunc = "ERROS";
	private String jMaoDireita = "";
	private String jMaoEsquerda = "";
	private String mensagemInicial = "";

	private Scrm2100 preMapas() {
		scrm2100 = new Scrm2100(true, sessao);
		// Arrays.fill(dedos, "");
		Arrays.fill(jObservacoes, "");
		// RELATORIO

		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName());
		return scrm2100;
	}

	public Scrp1420(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm2100 scrm2100) {
		try {
			main(scrm2100);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm2100 pscrm2100) throws Exception {
		if (pscrm2100 == null) {
			primeiraVez = true;
			// scrm2100 = new Scrm2100 (primeiraVez);
			scrm2100 = preMapas();
			scrm2100.setNavegar("../scrp1420/executar");
			scrm2100.setMensagem(mensagemInicial);
			result.include("scrm2100", scrm2100);
			sessao.setAtributo("SCRP1420", this);
			scrm2100.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrm2100);
		}

		scrm2100.receberTela(false, result);
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1400 scrp1400 = new Scrp1400(result, sessao);
			scrp1400.executar(null, null, null, null);
		}

		jMaoDireita = UtilBean.moveSubstring(jMaoDireita, 0, 7, "A", scrm2100.getDedos(1, 1));
		jMaoDireita = UtilBean.moveSubstring(jMaoDireita, 7, 7, "A", scrm2100.getDedos(2, 1));
		jMaoDireita = UtilBean.moveSubstring(jMaoDireita, 14, 7, "A", scrm2100.getDedos(3, 1));
		jMaoDireita = UtilBean.moveSubstring(jMaoDireita, 21, 7, "A", scrm2100.getDedos(4, 1));
		jMaoDireita = UtilBean.moveSubstring(jMaoDireita, 28, 7, "A", scrm2100.getDedos(5, 1));
		jMaoEsquerda = UtilBean.moveSubstring(jMaoEsquerda, 0, 7, "A", scrm2100.getDedos(1, 2));
		jMaoEsquerda = UtilBean.moveSubstring(jMaoEsquerda, 7, 7, "A", scrm2100.getDedos(2, 2));
		jMaoEsquerda = UtilBean.moveSubstring(jMaoEsquerda, 14, 7, "A", scrm2100.getDedos(3, 2));
		jMaoEsquerda = UtilBean.moveSubstring(jMaoEsquerda, 21, 7, "A", scrm2100.getDedos(4, 2));
		jMaoEsquerda = UtilBean.moveSubstring(jMaoEsquerda, 28, 7, "A", scrm2100.getDedos(5, 2));
		if (scrm2100.getJmae().equals("************")) {
			jMaeLimpa = "";
		} else {
			jMaeLimpa = scrm2100.getJmae();
		}
		if (scrm2100.getJregGeral() == 0 && jMaoDireita.trim().equals("") && jMaoEsquerda.trim().equals("") && scrm2100.getJnomecompleto().trim().equals("") && scrm2100.getJmae().trim().equals("")) {
			scrm2100.enviarMensagem(null, "Nenhum Campo Foi Informado - P/ Retornar tecle PF3");
			result.include("scrm2100", scrm2100);
			sessao.setAtributo("SCRP1420", this);
			scrm2100.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		// Par�grafo: fd33()
		while (criminalView.pesquisaRegEstadualGeralNomeCompletoNomeMaeMaoDireitaMaoEsquerdaStatusRegDifer(scrm2100.getJregGeral(), scrm2100.getJnomecompleto(), jMaeLimpa, jMaoDireita, jMaoEsquerda, 5)) {
			scrm2100.setJregGeral(criminalView.getRegEstadualGeral());
			scrm2100.setDedos(1, 1, criminalView.getPolegarDireito());
			scrm2100.setDedos(2, 1, criminalView.getIndicadorDireito());
			scrm2100.setDedos(3, 1, criminalView.getMedioDireito());
			scrm2100.setDedos(4, 1, criminalView.getAnularDireito());
			scrm2100.setDedos(5, 1, criminalView.getMinimoDireito());
			scrm2100.setDedos(1, 2, criminalView.getPolegarEsquerdo());
			scrm2100.setDedos(2, 2, criminalView.getIndicadorEsquerdo());
			scrm2100.setDedos(3, 2, criminalView.getMedioEsquerdo());
			scrm2100.setDedos(4, 2, criminalView.getAnularEsquerdo());
			scrm2100.setDedos(5, 2, criminalView.getMinimoEsquerdo());
			scrm2100.setJnomecompleto(criminalView.getNomeCompleto());
			scrm2100.setJmae(criminalView.getNomeMae());
			jData_nasc = criminalView.getDataNasc();
			jIdentidade = criminalView.getRegFederalCi();
			jUfRegGeral = criminalView.getUfRegEstadualGeral();
			jPai = criminalView.getNomePai();
			jDelegacia = criminalView.getNomeDelegacia();
			jDescMunicipio = criminalView.getMunicipioRegGeral();
			jMunicipio = criminalView.getCodigoMunicipioRegGeral();
			jNomeAnterior = criminalView.getNomeAnterior();
			jAlcunha = criminalView.getApelidoAlcunhas(1);
			jSexo = criminalView.getSexo();
			jNaturalidade = criminalView.getNaturalidade();
			jCodMunNascimento = criminalView.getCodigoMunicipioNasc();
			jUfNascimento = criminalView.getUfNaturalidade();
			jDocApresentado = criminalView.getDocumentoApresent();
			jNumDocApresentado = criminalView.getNumDocumentoApresent();
			jOrgaoExpUf = criminalView.getOrgaoExpUfUfUf();
			jStatus = String.valueOf(criminalView.getStatusReg());
			jProfissao = criminalView.getProfissao();
			jInstrucao = criminalView.getGrauInstrucao();
			jAvRua = criminalView.getAvRua();
			jNumero = criminalView.getNumero();
			jBairro = criminalView.getBairro();
			jMunEndereco = criminalView.getMunicipio();
			jUfEndereco = criminalView.getEstado();
			jCep = criminalView.getCep();
			jComplemento = criminalView.getComplemento();
			jDataRegistro = criminalView.getDataReg();
			jDataAtuacao = criminalView.getDataAtuacao();
			jAltura = criminalView.getAltura();
			jEstadoCivil = criminalView.getEstadoCivil();
			jCutis = criminalView.getCodigoCutis();
			jCorCabelo = criminalView.getCodigoCorCabelo();
			jTipoCabelo = criminalView.getCodigoTipoCabelo();
			jCorOlhos = criminalView.getCodigoCorOlhos();
			jSinais = criminalView.getMarcaPartCicatTatuag();
			jCompleicao = criminalView.getCompleicao();
			jNomeVitima = criminalView.getNomeVitima();
			jMotivo = criminalView.getMotivoPrisaoLei();
			jOcorrencia = 1;
			jObservacoes = criminalView.getObservacao();
			jDataDig = criminalView.getDataDocAtu();
			jMatricula = criminalView.getMatriculaFuncAtu();
			jHorario = criminalView.getHoraAtu();
			jDataIni = jDataDig;
			// Par�grafo: fd2()
			senhaView.consultaMatricula(jMatricula);

			jNomeDigitador = senhaView.getNome();

			switch (jStatus) {
			case "0": {
				jDescreg = "Registro Normal";
				break;
			}
			case "1": {
				jDescreg = "Registro Cancelado";
				break;
			}
			case "2": {
				jDescreg = "Registro com Mandato de Prisao preventiva";
				break;
			}
			case "3": {
				jDescreg = "Condenado";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jInstrucao) {
			case 0: {
				jDescInstrucao = "Nao Informada";
				break;
			}
			case 1: {
				jDescInstrucao = "Nao Alfabetizado";
				break;
			}
			case 2: {
				jDescInstrucao = "1o. Grau Incompleto";
				break;
			}
			case 3: {
				jDescInstrucao = "1o. Grau Completo";
				break;
			}
			case 4: {
				jDescInstrucao = "2o. Grau Incompleto";
				break;
			}
			case 5: {
				jDescInstrucao = "2o. Grau Completo";
				break;
			}
			case 6: {
				jDescInstrucao = "Superior Incompleto";
				break;
			}
			case 7: {
				jDescInstrucao = "Superior Completo";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jAltura) {
			case 0: {
				jDescAltura = "Nao Informada";
				break;
			}
			case 1: {
				jDescAltura = "1,60 ou Menos";
				break;
			}
			case 2: {
				jDescAltura = "1,61 - 1,70";
				break;
			}
			case 3: {
				jDescAltura = "1,71 - 1,80";
				break;
			}
			case 4: {
				jDescAltura = "1,81 - 1,90";
				break;
			}
			case 5: {
				jDescAltura = "1,91 ou Mais";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jEstadoCivil) {
			case 0: {
				jDescCivil = "Nao Informado";
				break;
			}
			case 1: {
				jDescCivil = "Casado";
				break;
			}
			case 2: {
				jDescCivil = "Solteiro";
				break;
			}
			case 3: {
				jDescCivil = "DESQUITADO";
				break;
			}
			case 4: {
				jDescCivil = "Viuvo";
				break;
			}
			case 5: {
				jDescCivil = "DIVORCIADO";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jCutis) {
			case 0: {
				jDescCutis = "Nao Informada";
				break;
			}
			case 1: {
				jDescCutis = "BRANCA";
				break;
			}
			case 2: {
				jDescCutis = "Preta";
				break;
			}
			case 3: {
				jDescCutis = "Parda Clara";
				break;
			}
			case 4: {
				jDescCutis = "Parda Escura";
				break;
			}
			case 5: {
				jDescCutis = "AMARELA";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jCorCabelo) {
			case 0: {
				jDescCor = "Nao Informada";
				break;
			}
			case 1: {
				jDescCor = "CASTANHOS";
				break;
			}
			case 2: {
				jDescCor = "PRETOS";
				break;
			}
			case 3: {
				jDescCor = "Louros";
				break;
			}
			case 4: {
				jDescCor = "Grisalhos";
				break;
			}
			case 5: {
				jDescCor = "Ruivos";
				break;
			}
			case 6: {
				jDescCor = "Brancos";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jTipoCabelo) {
			case 0: {
				jDescTipocabelo = "Nao Informado";
				break;
			}
			case 1: {
				jDescTipocabelo = "Liso";
				break;
			}
			case 2: {
				jDescTipocabelo = "Encaracolado";
				break;
			}
			case 3: {
				jDescTipocabelo = "Ondulado";
				break;
			}
			case 4: {
				jDescTipocabelo = "CARAPINHA";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jCorOlhos) {
			case 0: {
				jDescOlho = "Nao Informada";
				break;
			}
			case 1: {
				jDescOlho = "CASTANHOS";
				break;
			}
			case 2: {
				jDescOlho = "PRETOS";
				break;
			}
			case 3: {
				jDescOlho = "AZUIS";
				break;
			}
			case 4: {
				jDescOlho = "VERDES";
				break;
			}
			case 5: {
				jDescOlho = "Duas Cores";
				break;
			}
			default: {
				continue;
			}
			}
			switch (jCompleicao) {
			case 0: {
				jDescCompleicao = "Nao Informada";
				break;
			}
			case 1: {
				jDescCompleicao = "Magro";
				break;
			}
			case 2: {
				jDescCompleicao = "Medio";
				break;
			}
			case 3: {
				jDescCompleicao = "Gordo";
				break;
			}
			case 4: {
				jDescCompleicao = "Troncudo";
				break;
			}
			case 5: {
				jDescCompleicao = "Raquitico";
				break;
			}
			default: {
				continue;
			}
			}

			// Escopo - report1.receberTela(false, result);

			// Escopo - report1.receberTela(false, result);

			// Escopo - report1.receberTela(false, result);

			if (senhaView.fimDados()) {
				Scrp1420 scrp1420 = new Scrp1420(result, sessao);
				scrp1420.executar(null);
				return;
			}

		}
		if (criminalView.registrosProcessados() == 0) {
			scrm2100.setMensagem("                   NENHUMA FICHA CRIMINAL FOI ENCONTRADA");
		}
		sessao.setAtributo("SCRP1420", this);
		result.include("scrm2100", scrm2100);
		scrm2100.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void restaurarEstados(Scrm2100 pscrm2100) {
		this.scrp1420Anterior = (Scrp1420) sessao.getAtributo("SCRP1420");
		if (pscrm2100 != null) {
			scrm2100 = pscrm2100;
		} else {
			scrm2100 = this.scrp1420Anterior.scrm2100;
		}
		scrm2100.setSessao(sessao);
		this.faseproc = this.scrp1420Anterior.faseproc;
	}

	protected void setMensagem(String mensagem) {
		mensagemInicial = mensagem;
	}
}
